package net.versiforma.libraryreminder.emails;

import java.util.ArrayList;
import java.util.Properties;

import net.versiforma.libraryreminder.BorrowedItem;
import net.versiforma.libraryreminder.LibraryAccount;
import net.versiforma.libraryreminder.User;


public class ReminderEmail extends EmailMessage {
	
	
	private ArrayList<LibraryAccount> accounts = new ArrayList<LibraryAccount>();
	

	
	public ReminderEmail(Properties properties, User user) {
		
		super(properties);
		
		addressee = user.getEmail();
		accounts = user.getAccounts();
	
		
		subject = "[" + serviceName + "] Erinnerung";
	
		
		messageBody = "Hallo " + user.getName() + "," + lineBreak + lineBreak;
		
		messageBody += "die Leihfrist der folgenden Medien endet in Kürze oder ist bereits geendet: " + lineBreak + lineBreak + lineBreak;
		
		
		for (LibraryAccount account:accounts) {
			
			if (! account.hasDueSoonItems() ) continue;

			messageBody += " " + account.getLibraryName() + " (Ausweisnummer: "+account.getUserid()+")" + lineBreak + lineBreak;

			for ( BorrowedItem item : account.getDueSoonItems() ) {
				int dueInDays = item.getDueInDays();
				String expiryMessage;
				String timeIndication;

				if (dueInDays < 0) {
					if ( dueInDays == -2 ) {
						timeIndication = "vorgestern";
					} else if	( dueInDays == -1 ) {
						timeIndication = "gestern";
					} else { 
						timeIndication = "vor " + Integer.toString(Math.abs(dueInDays)) + " Tagen";
					}
					expiryMessage = "(ACHTUNG! Der Artikel ist " + timeIndication + " abgelaufen!)";
				}
				else {
					if (dueInDays == 0) {
						expiryMessage = "(ACHTUNG! Der Artikel läuft heute ab!)";
					} else if (dueInDays == 1) {
						expiryMessage = "(ACHTUNG! Der Artikel läuft morgen ab!)";
					} else if (dueInDays == 2) {
						expiryMessage = "(läuft übermorgen ab)";
					} else {
						expiryMessage = "(läuft in " + dueInDays + " Tagen ab)";
					}
				}

				messageBody +=
					" * " + item.getLibrary() + " " +  item.getTitle() + lineBreak + 
					"   " + expiryMessage + lineBreak + lineBreak + lineBreak;
			}
		}
		
		messageBody += 
			"Beachten Sie, dass Ihre Ausleihen nicht automatisch verlängert werden. Dies ist aber als zukünftiges Feature geplannt. " + 
			"Wir erinnern Sie also daran, dass Sie die Medien rechtzeitig zurückgeben oder die Leihfrist verlängern, "+
			"wenn eine Verlängerung gewünscht und noch möglich ist.";
		
		messageBody += mailSignature;
	}
	

}
